home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / sparc / include / asm / cacheflush_32.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  3.5 KB  |  86 lines

  1. #ifndef _SPARC_CACHEFLUSH_H
  2. #define _SPARC_CACHEFLUSH_H
  3.  
  4. #include <linux/mm.h>        /* Common for other includes */
  5. // #include <linux/kernel.h> from pgalloc.h
  6. // #include <linux/sched.h>  from pgalloc.h
  7.  
  8. // #include <asm/page.h>
  9. #include <asm/btfixup.h>
  10.  
  11. /*
  12.  * Fine grained cache flushing.
  13.  */
  14. #ifdef CONFIG_SMP
  15.  
  16. BTFIXUPDEF_CALL(void, local_flush_cache_all, void)
  17. BTFIXUPDEF_CALL(void, local_flush_cache_mm, struct mm_struct *)
  18. BTFIXUPDEF_CALL(void, local_flush_cache_range, struct vm_area_struct *, unsigned long, unsigned long)
  19. BTFIXUPDEF_CALL(void, local_flush_cache_page, struct vm_area_struct *, unsigned long)
  20.  
  21. #define local_flush_cache_all() BTFIXUP_CALL(local_flush_cache_all)()
  22. #define local_flush_cache_mm(mm) BTFIXUP_CALL(local_flush_cache_mm)(mm)
  23. #define local_flush_cache_range(vma,start,end) BTFIXUP_CALL(local_flush_cache_range)(vma,start,end)
  24. #define local_flush_cache_page(vma,addr) BTFIXUP_CALL(local_flush_cache_page)(vma,addr)
  25.  
  26. BTFIXUPDEF_CALL(void, local_flush_page_to_ram, unsigned long)
  27. BTFIXUPDEF_CALL(void, local_flush_sig_insns, struct mm_struct *, unsigned long)
  28.  
  29. #define local_flush_page_to_ram(addr) BTFIXUP_CALL(local_flush_page_to_ram)(addr)
  30. #define local_flush_sig_insns(mm,insn_addr) BTFIXUP_CALL(local_flush_sig_insns)(mm,insn_addr)
  31.  
  32. extern void smp_flush_cache_all(void);
  33. extern void smp_flush_cache_mm(struct mm_struct *mm);
  34. extern void smp_flush_cache_range(struct vm_area_struct *vma,
  35.                   unsigned long start,
  36.                   unsigned long end);
  37. extern void smp_flush_cache_page(struct vm_area_struct *vma, unsigned long page);
  38.  
  39. extern void smp_flush_page_to_ram(unsigned long page);
  40. extern void smp_flush_sig_insns(struct mm_struct *mm, unsigned long insn_addr);
  41.  
  42. #endif /* CONFIG_SMP */
  43.  
  44. BTFIXUPDEF_CALL(void, flush_cache_all, void)
  45. BTFIXUPDEF_CALL(void, flush_cache_mm, struct mm_struct *)
  46. BTFIXUPDEF_CALL(void, flush_cache_range, struct vm_area_struct *, unsigned long, unsigned long)
  47. BTFIXUPDEF_CALL(void, flush_cache_page, struct vm_area_struct *, unsigned long)
  48.  
  49. #define flush_cache_all() BTFIXUP_CALL(flush_cache_all)()
  50. #define flush_cache_mm(mm) BTFIXUP_CALL(flush_cache_mm)(mm)
  51. #define flush_cache_dup_mm(mm) BTFIXUP_CALL(flush_cache_mm)(mm)
  52. #define flush_cache_range(vma,start,end) BTFIXUP_CALL(flush_cache_range)(vma,start,end)
  53. #define flush_cache_page(vma,addr,pfn) BTFIXUP_CALL(flush_cache_page)(vma,addr)
  54. #define flush_icache_range(start, end)        do { } while (0)
  55. #define flush_icache_page(vma, pg)        do { } while (0)
  56.  
  57. #define flush_icache_user_range(vma,pg,adr,len)    do { } while (0)
  58.  
  59. #define copy_to_user_page(vma, page, vaddr, dst, src, len) \
  60.     do {                            \
  61.         flush_cache_page(vma, vaddr, page_to_pfn(page));\
  62.         memcpy(dst, src, len);                \
  63.     } while (0)
  64. #define copy_from_user_page(vma, page, vaddr, dst, src, len) \
  65.     do {                            \
  66.         flush_cache_page(vma, vaddr, page_to_pfn(page));\
  67.         memcpy(dst, src, len);                \
  68.     } while (0)
  69.  
  70. BTFIXUPDEF_CALL(void, __flush_page_to_ram, unsigned long)
  71. BTFIXUPDEF_CALL(void, flush_sig_insns, struct mm_struct *, unsigned long)
  72.  
  73. #define __flush_page_to_ram(addr) BTFIXUP_CALL(__flush_page_to_ram)(addr)
  74. #define flush_sig_insns(mm,insn_addr) BTFIXUP_CALL(flush_sig_insns)(mm,insn_addr)
  75.  
  76. extern void sparc_flush_page_to_ram(struct page *page);
  77.  
  78. #define flush_dcache_page(page)            sparc_flush_page_to_ram(page)
  79. #define flush_dcache_mmap_lock(mapping)        do { } while (0)
  80. #define flush_dcache_mmap_unlock(mapping)    do { } while (0)
  81.  
  82. #define flush_cache_vmap(start, end)        flush_cache_all()
  83. #define flush_cache_vunmap(start, end)        flush_cache_all()
  84.  
  85. #endif /* _SPARC_CACHEFLUSH_H */
  86.